﻿using System;

namespace GameFramework.skill
{
    [Serializable]
    public class SkillConfig
    {
        public int id;
        public string name;
        public string desc;

        public string skillIcon;

        //下一个技能id，多用于组合技能或连击
        public int nextSkillId;

        //连招的头技能id，为第一个技能的id
        public int skillLeadId;

        //消耗类型
        //位运算，可多种消耗一起
        //0：不消耗
        //1：蓝，固定值
        //2：蓝，百分比
        //4：血，固定值
        //8：血，百分比
        //16：能量，固定值
        //32：能量，百分比
        //：金币，固定值
        //....
        public int costType;

        public float[] costValue;

        public float cd;

        //目标类型
        //1.不需要目标 
        //2.需要选定目标
        //4.需要选定地点
        public float targetType;


        //技能施法范围，敌人在这个范围内才能释放
        public float releaseRange;


        //1.敌人
        //2.队友
        //4.怪物
        //8.建筑
        //...
        public int targetTag;

        //1.被动技能(不能手动释放)，一般以buff形式体现效果(比如虚空被动，白牛被动)
        //2.主动施法技能(比如骷髅王的锤子)
        //3.开关类技能(比如巫医的治疗,开启后就直接释放，持续产生效果的技能)
        //4.激活类技能(激活后仍需手动/自动释放，释放后有cd,比如小黑的1技能，可以主动释放，也可以一直激活，有目标则直接释放，毒龙的1技能也是这个，末日的吃兵等)
        //激活后才生效的技能
        //技能被初始化加入技能列表的时候要根据释放类型进行一些处理，比如被动技能可能需要给玩家添加一些buff
        public int releaseType;

        //激活或开启类技能的默认开启状态
        //0关闭
        //1开启
        public int defaultType;
        //Administrator:
        //在没有目标时，自动搜寻周围目标的类型
        //0：不搜寻
        //1：搜寻最近的
        //2：搜寻最远的
        // (自能搜寻能搜寻的，隐身的能搜寻么？)

        public int searchType;


        //效果id,用于关联效果表（effect）
        public int[] effectIds;

        //技能指示器的名字
        public string skillIndicator;

        //技能前摇时间
        public float beforeTime;

        //前摇动画
        public string beforeAnimation;

        //引导/施法动画
        public string releaseAnimation;

        //引导技能持续时间
        public float durationTime;

        //释放技能时播放的动作
        public string 后摇;
    }
}